﻿#pragma once
#include <vtkm/cont/ArrayHandle.h>

template<typename T>
class VTKmArray
{
public:
  VTKmArray() = default;
  explicit VTKmArray(const size_t N);

  virtual ~VTKmArray() = default;
  
  void allocate(size_t N) { this->m_data.Allocate(N); }

  size_t getNumberOfComponents() { return this->m_data.GetNumberOfComponents(); }


  void zero();

  VTKmArray<T>& operator*=(const T a);

  VTKmArray(VTKmArray&&) = default;
  VTKmArray(const VTKmArray&) = default;
  VTKmArray& operator=(VTKmArray&&) = default;

private:
  vtkm::cont::ArrayHandle<T> m_data;
};
